The present invention relates generally to the field of digital data communication buses, and more particularly to I2C (Inter-Integrated Circuit, commonly pronounced I-squared-C) buses used in systems where at least one of the master devices does not have multi-master support.
I2C is a multi-master serial bus typically used for attaching low-speed peripherals to a motherboard, embedded system, cellphone and/or other digital electronic devices. SMBus is a subset of I2C that has more restrictive protocols to promote robustness and interoperability. Some I2C systems incorporate policies and rules from SMBus, sometimes supporting both I2C and SMBus, and requiring only minimal reconfiguration. Herein, I2C, SMBus and other similar sets of bus-related protocols will be collectively referred to as bus serialization protocols (BSPs). Conventional I2C protocol buses include the following components: (i) a serial data line (SDA); (ii) a serial clock line (SCL); (iii) a positive voltage terminal at potential Vdd; (iv) a pull-up resistor connected between the Vdd terminal and SCL; (v) a pull-up resistor connected between the Vdd terminal and SDA; and (vi) a voltage terminal at ground (GND).
Conventionally, the use of two, or more, master devices on an I2C protocol bus requires conventional multi-master support circuitry, as will be understood by those of skill in the art. Conventional multi-master support includes arbitration and “clock synchronization.” Conventionally I2C buses with more than one I2C master device use multi master I2C master devices which include a dedicated controller module (see definition of “module,” below, in the Definitions sub-section of the Detailed Description section). Under currently conventional technology, if a I2C bus has more than one I2C master device, and at least one of these master devices does not provide multi master capability, then there will typically be a mechanism (for example, separate “bus busy” or “bus request” lines) for bus arbitration.
Under official I2C specifications, controlled devices are referred to as “slave devices.” However, in order to avoid unintentionally offending any readers, this document will refer to I2C controlled devices as “controlled devices.”